import Vue from 'vue'
import Vuex from 'vuex'
import Moment from 'moment'
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    node:{  // node编辑页的缓存内容
      type:0, // 类型
      title:"",  // 标题
      dateNow:"",  // 现在时间
      text:""  // 正文内容
    },
    msgshow:false, // 提示消息
    showList:{  // home页面展示哪一项内容
      list:false, // 选择列表是否展示
      node:true,  // 以下为四种标签的显示状态
      date:false,
      bill:false,
      rember:false
    },
    edit:false, // 编辑按钮的状态
    save:'', // 是否保存
  },
  mutations: {
    /* 更新当前时间 */
    setDate(state){
      state.node.dateNow = Moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
    },
    setDate(state,time){
      state.node.dateNow = Moment(time).format('YYYY-MM-DD HH:mm:ss')
    },
    /* 保存缓存内容到本地 */
    saveNode(state){
      var nodes = [];
      var type = 'nodes';
      for(var i in state.showList){
        if(state.showList[i] && i!='list'){
          type = i+'s';
        }
      }
      // 如果本地没有数据则加入第一条数据
      if(localStorage.getItem(type)!=null){
        nodes = JSON.parse(localStorage.getItem(type))
      }
      // 将新的内容加入数组
      nodes.push(state.node);
      // 将缓存内容存入本地
      localStorage.setItem(type,JSON.stringify(nodes))
      // 清理缓存内容
      this.commit("clearNode")  
    },
    /* 清除缓存内容 */
    clearNode(state){
      state.node.title = ""
      state.node.text = ""
      this.commit("setDate")
    },
    /* 显示/隐藏提示信息 */
    msgShow(state,res){
      state.msgshow = res
    },
    /* 当右上角列表选择发生改变时 */
    changeList(state,res){
      // 先将所有状态置假
      for(var i in state.showList){
        state.showList[i] = false
      }
      // 判断当前选择的状态置真
      switch(res){
        case 'node':state.showList.node = true;break;
        case 'date':state.showList.date = true;break;
        case 'bill':state.showList.bill = true;break;
        case 'rember':state.showList.rember = true;break;
      }
    },
    /* 显示/隐藏右上角列表 */
    showList(state,res){
      state.showList.list = res
    },
    /* 编辑/保存按钮状态 */
    toEdit(state,res){
      state.edit = res
    },
    /* 保存编辑信息 */
    saveEdit(state){
      for(var i in state.showList){
        if(state.showList[i] && i!='list'){
          state.save = i;
          break;
        }
      }
    }

  },
  getters:{
  },
  actions: {
  },
  modules: {
  }
})
